The invention pertains to communication between multiple sockets within a communication network.
It may be applied to any process which receives messages or data from multiple sources via Internet communication networks and which operate using protocols such as TCP (“Transport Control Protocol”) or their equivalents.
Generally, a socket comprises a receive list that lists buffer memories containing the received data stream, and a send list that lists buffer memories containing the data streams to be send.
The receive lists and send lists are said to be “doubly linked” in that the buffer memories that constitute them each possess a structure comprising a “previous” pointer indicating the buffer memory that precedes the current buffer memory in the corresponding list, and a second “next” pointer indicating the buffer memory which follows the current buffer memory in the corresponding list.
With only one socket, the process may receive messages or data while waiting for them to arrive in said socket's receive list.
With multiple sockets, it is necessary to first execute a cyclical analysis of the receive lists to find the sockets which have received messages intended to be read.
Multiple known solutions, particularly those known as “select”, “poll”, “kqueue”, and “epoll” have been proposed to implement this analysis.
These known solutions are relatively satisfactory, but do not take into account the order in which the messages arrive, and involve an additional task.
The result is a significant degradation in network performance, with this degradation growing larger the more sockets need to be read, such as with more than 1000 sockets.